package de.bw.jeans.alarminfo;

import java.io.FileOutputStream;
import java.util.ArrayList;

import android.app.Notification;
import android.app.NotificationManager;
import android.content.Context;
import android.content.Intent;
import android.util.Log;

import com.google.android.gcm.GCMBaseIntentService;

import de.bw.jeans.alarminfo.datatypes.Alarmdaten;
import de.bw.jeans.alarminfo.tools.LeseIlsAlarme;
import de.bw.jeans.alarminfo.tools.XmlFileTools;

public class GCMIntentService extends GCMBaseIntentService {
	
	@Override
	protected void onError(Context arg0, String arg1) {
		// TODO Auto-generated method stub
		Log.d("AlarmInfo->onError", arg1);
	}

	@Override
	protected void onMessage(Context arg0, Intent arg1) {
		// TODO Auto-generated method stub
		Log.d("AlarmInfo->onMessage", String.valueOf(arg1));
		
		try {
			String message = arg1.getStringExtra("message");
			
			if(message.equals("newAlert")) {
				// Ein neuer Alarm soll angezeigt werden!
				// Einlesen des aktuellsten Alarms und schreiben in den Datenspeicher
				ArrayList<Alarmdaten> alData = new ArrayList<Alarmdaten>();
				Alarmdaten newAlarmDaten = LeseIlsAlarme.getLastAlert();
				alData.add(newAlarmDaten);
				XmlFileTools.writeAlertXmlFile(alData, arg0);
				
				final String SICHERUNGSFILE_NAME = "SelectedAlert.txt";
				try {
			    	FileOutputStream fos = openFileOutput(SICHERUNGSFILE_NAME, Context.MODE_PRIVATE);
			    	fos.write(newAlarmDaten.getAlarmId().getBytes());
			    	fos.close();
				}
				catch (Exception ex) {
					Log.d("AlarmInfo", "Fehler beim Schreiben des Sicherungsfiles...");
				}
				
				// Das LED blinken lassen
				NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
				Notification notification = new Notification();
				notification.ledARGB  = 0xFFff0000;;
				notification.flags    = Notification.FLAG_SHOW_LIGHTS;
				notification.ledOnMS  = 100;
				notification.ledOffMS = 100;
				notificationManager.notify(0, notification);
				
				// Das Falg-File für den Alarmsound schreiben
				FileOutputStream stream = arg0.openFileOutput("PlaySound.txt", Context.MODE_PRIVATE);
				stream.close();
				
				// Wenn die Daten korrekt im Datenspeicher angekommen sind diese anzeigen...
				Intent intent = new Intent(arg0.getApplicationContext(), ShowAlertMapActivity.class);
				intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
				startActivity(intent);
			}
		}
		catch(Exception ex) {
			Log.d("AlarmInfo", "Fehler beim Eingang einer neuen GCM-Nachricht!");
		}
		
	}

	@Override
	protected void onRegistered(Context arg0, String arg1) {
		// TODO Auto-generated method stub
		Log.d("AlarmInfo->onRegistered", arg1);
	}

	@Override
	protected void onUnregistered(Context arg0, String arg1) {
		// TODO Auto-generated method stub
		Log.d("AlarmInfo->onUnregistered", arg1);
	}	
}
